﻿<?xml version="1.0" encoding="utf-8" ?>
<GuidancePackage xmlns="http://schemas.microsoft.com/pag/gax-core"
                  xmlns:xi="http://www.w3.org/2003/XInclude"
    Name="ProjectBase.Guidance"
    Caption="ProjectBase Guidance"
    Description="ProjectBase Guidance for a WEB solution"
    BindingRecipe="BindingRecipe"
    Guid="87f4a6da-63ef-4fd0-b132-e45f10ad74bc"
    SchemaVersion="1.0">
  <Recipes>

    <xi:include href="Recipes/BindingRecipe.xml" />

    <Recipe Name="CreateProjectBaseWeb">
      <Types xmlns="http://schemas.microsoft.com/pag/gax-core">
        <TypeAlias Name="ActionCoordinator" Type="ProjectBase.Guidance.Actions.ActionCoordinator, ProjectBase.Guidance" />
        <TypeAlias Name="ActionCoordinatorWeb" Type="ProjectBase.Guidance.Actions.ActionCoordinatorWeb, ProjectBase.Guidance" />
        <TypeAlias Name="AddItemToFolderAction" Type="ProjectBase.Guidance.Actions.AddItemToFolderAction, ProjectBase.Guidance" />
        <TypeAlias Name="DefaultValueProvider" Type="ProjectBase.Guidance.ValueProviders.DefaultValueProvider, ProjectBase.Guidance" />
        <TypeAlias Name="Evaluator" Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.ExpressionEvaluatorValueProvider,Microsoft.Practices.RecipeFramework.Library" />
        <TypeAlias Name="SolutionProvider" Type="ProjectBase.Guidance.ValueProviders.SolutionProvider, ProjectBase.Guidance" />
        <TypeAlias Name="GuidValueProvider" Type="ProjectBase.Guidance.ValueProviders.GuidValueProvider, ProjectBase.Guidance" />
      </Types>
      <Caption>ProjectBase wizard collecting Web-application data.</Caption>
      <Arguments>
        <Argument Name="ProjectBaseCore" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="ProjectBase.Core" />
        </Argument>
        <Argument Name="ProjectBaseData" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="ProjectBase.Data" />
        </Argument>
        <Argument Name="ProjectBaseMvc" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="ProjectBase.Mvc" />
        </Argument>

        <Argument Name="ProjectBaseTools" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="ProjectBase.Tools" />
        </Argument>

        <Argument Name="ProjectEntity" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="$(safeprojectname).Entity" />
        </Argument>
        <Argument Name="ProjectCommon" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="$(safeprojectname).Common" />
        </Argument>
        <Argument Name="ProjectData" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="$(safeprojectname).Data" />
        </Argument>
        <Argument Name="ProjectBusiness" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="$(safeprojectname).Business" />
        </Argument>

        <Argument Name="ProjectAOP" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="$(safeprojectname).Aop" />
        </Argument>

        <Argument Name="ProjectTools" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="$(safeprojectname).Tools" />
        </Argument>

        <Argument Name="ProjectRestApi" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="$(safeprojectname).RestApi" />
        </Argument>
        <Argument Name="ProjectMvc" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="$(safeprojectname).Mvc" />
        </Argument>
        <Argument Name="ProjectWeb" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="$(safeprojectname).Web" />
        </Argument>

        <Argument Name="ProjectTests" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="$(safeprojectname).Tests" />
        </Argument>

        <Argument Name="prjsn" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="$(safeprojectname)" />
        </Argument>

        <!-- Fields panel -->
        <Argument Name="ConString">
          <ValueProvider Type="DefaultValueProvider" Expression="Data Source=.\SQL2008;Database=Product;Trusted_Connection=yes;" />
        </Argument>
        <Argument Name="VersionValue">
          <ValueProvider Type="DefaultValueProvider" Expression="1.0.0.0" />
        </Argument>
        <!-- SolutionPage1 -->
        <Argument Name="DefaultIsXml">
          <ValueProvider Type="DefaultValueProvider" Expression=".Xml" />
        </Argument>

        <Argument Name="ConfigValidationKey">
          <ValueProvider Type="GuidValueProvider" Expression="128" />
        </Argument>
        <Argument Name="ConfigDecryptionKey">
          <ValueProvider Type="GuidValueProvider" Expression="48" />
        </Argument>

        <Argument Name="guid0">
          <ValueProvider Type="GuidValueProvider" Expression="36" Format="D" />
        </Argument>
      </Arguments>
      <GatheringServiceData>
        <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
          <Pages>
            <Page>
              <Title>Initial values for the ProjectBase Web-app solution</Title>
              <Fields>
                <Field Label="Connection string (SQL server)" ValueName="ConString">
                  <Tooltip>
                    Connection string for an NHibernate factory.
                    Can be changed later in the 'web.config' and 'app.config' (Tests)
                  </Tooltip>
                  <Help>
                    Connection string for an NHibernate factory.
                    Default value: Data Source=.\SQL2008;Database=Product;Trusted_Connection=yes;
                  </Help>
                </Field>

                <Field Label="Starting version of project assebmlies" ValueName="VersionValue">
                  <Tooltip>Initial version of your project libraries.</Tooltip>
                  <Help>
                    Version will be stored in an assembly-version file,
                    which is placed in the Common project and linked to all Project libraries.
                    Default value: 1.0.0.0
                  </Help>
                </Field>
              </Fields>
            </Page>
            <Page Type="ProjectBase.Guidance.CustomWizardPages.SolutionPage1,ProjectBase.Guidance">
              <Title>Services entities storage: DB ver. XML</Title>
            </Page>
          </Pages>
        </Wizard>
      </GatheringServiceData>

      <xi:include href="Recipes/AddReferenceAndAssembly.xml" />
    </Recipe>

    <xi:include href="Recipes/01CreateEntity.xml" />
    <xi:include href="Recipes/02CreateData.xml" />
    <xi:include href="Recipes/03CreateBusiness.xml" />
    <xi:include href="Recipes/04CreateModel.xml" />
    <xi:include href="Recipes/05CreateController.xml" />
    <xi:include href="Recipes/06CreateWeb.xml" />
    <xi:include href="Recipes/07CreateTest.xml" />
    <xi:include href="Recipes/08CreateUNTILBusiness.xml" />
    <xi:include href="Recipes/09CreateWebMvc.xml" />
    <xi:include href="Recipes/10CreateAll.xml" />
  </Recipes>
</GuidancePackage>